package com.mlh.linkedlist;

/**
 * @author 缪林辉
 * @date 2024/8/20 16:37
 * @DESCRIPTION
 */
// 给你一个链表的头节点 head ，判断链表中是否有环。
// 如果链表中存在环 ，则返回 true 。 否则，返回 false 。
public class 环形链表 {
    // 快慢指针
    public boolean method1(ListNode head) {
        if (head == null || head.next == null) {
            return false;
        }
        ListNode slow = head, fast = head.next;
        while (fast != null && fast.next != null) {
            if (fast == slow) {
                return true;
            }
            fast = fast.next.next;
            slow = slow.next;
        }
        return false;
    }

    public boolean practice(ListNode head) {
        if(head==null){
            return false;
        }
        ListNode slow=head,fast=head.next;
        // 不是环形链表 退出循环
        // 是环形链表判断if 退出循环
        while(fast!=null&&fast.next!=null){
            if(slow==fast){
                return true;
            }
            slow=slow.next;
            fast=fast.next.next;
        }
        return false;
    }
}
